<html>
<script type="text/javascript">
function unique(arr) {
    return arr.filter(function(item, index){
        // indexOf返回第一个索引值，
        // 如果当前索引不是第一个索引，说明是重复值
        return arr.indexOf(item) === index;
    });
}

function unique2(arr) {
    var ret = [];
    arr.forEach(function(item){
        if(ret.indexOf(item) === -1){
            ret.push(item);
        }
    });
    return ret;
}

function unique3(arr){
    var ret = [];
    var len = arr.length;
    var isRepeat;
    for(var i=0; i<len; i++) {
        isRepeat = false;
        for(var j=i+1; j<len; j++) {
            if(arr[i] === arr[j]){
                isRepeat = true;
                break;
            }
        }
        if(!isRepeat){
            ret.push(arr[i]);
        }
    }
    return ret;
}

function unique4(arr) {
    var ret = [];
    var len = arr.length;
    var tmp = new Map();
    for(var i=0; i<len; i++){
        if(!tmp.get(arr[i])){
            tmp.set(arr[i], 1);
            ret.push(arr[i]);
        }
    }
    return ret;
}

function unique5(arr) {
     var hashTable = {};
     var data = [];
     for(var i = 0, l = arr.length; i < l; i++) {
         if(!hashTable[arr[i]]) {
             hashTable[arr[i]] = true;
             data.push(arr[i]);
         }
     }
     return data;
 }

var test = [1,2,1,2,1,2,3];

var result1 = unique(test);
var result2 = unique2(test);
var result3 = unique3(test);
var result4 = unique4(test);
var result5 = unique5(test);
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
console.log(result5);
</script>
</html>